function init(version) {
    // Connect to the SocketIO server to retrieve ongoing games.
    socket = io.connect();

    socket.on('gamesList', function(data) {
        var slctcust = document.getElementById('lesPartiesCustom');
        if (slctcust !== null) {
            slctcust.innerHTML = '';
            nbrGameCust = 0;

            if (version === 'fish') { //construction de la version fish eye
                for (p in data.gamesListCust) {
                    var ah = document.createElement('a');
                    var im = document.createElement('image');
                    var sp = document.createElement('span');

                    ah.href = 'javascript:select(\'' + data.gamesListCust[p] + '\')';
                    ah.className = 'fisheyeItem';

                    im.src = 'img/jeu.png';
                    im.width = '30px';
                    im.id = data.gamesListCust[p];

                    sp.innerText = data.gamesListCust[p];

                    ah.appendChild(im);
                    ah.appendChild(sp);

                    slctcust.appendChild(ah);

                    nbrGameCust++;
                }
                formatMenu(nbrGameCust);
            } else { //version liste avec sélection
                for (p in data.gamesListCust) {
                    var op = document.createElement('option');
                    op.text = data.gamesListCust[p];
                    op.index = data.gamesListCust[p];
                    slctcust.add(op);

                    nbrGameCust++;
                }
                slctcust.size = slctcust.length;
            }
            if (nbrGameCust == 0) {
                $('#newplateau').hide();
            } else {
                $('#newplateau').show();
            }
        }


        var slct = document.getElementById('lesParties');
        slct.innerHTML = '';
        nbrGame = 0;

        if (version === 'fish') { //construction de la version fish eye
            for (p in data.gamesList) {
                var ah = document.createElement('a');
                var im = document.createElement('image');
                var sp = document.createElement('span');

                ah.href = 'javascript:select(\'' + data.gamesList[p] + '\')';
                ah.className = 'fisheyeItem';

                im.src = 'img/jeu.png';
                im.width = '30px';
                im.id = data.gamesList[p];

                sp.innerText = data.gamesList[p];

                ah.appendChild(im);
                ah.appendChild(sp);

                slct.appendChild(ah);

                nbrGame++;
            }
            formatMenu(nbrGame);
        } else { //version liste avec sélection
            for (p in data.gamesList) {
                var op = document.createElement('option');
                op.text = data.gamesList[p];
                op.index = data.gamesList[p];
                slct.add(op);

                nbrGame++;
            }
            slct.size = slct.length;
        }


        //Affichage ou non de la zone avec les nouvelles parties
        var lst = document.getElementById('lignesListeParties');
        var cellRadio = document.getElementById('celluleChoixNouveau');
        var cellNom = document.getElementById('celluleNomPartie');
        var cellLabel = document.getElementById('celluleLabelNouveau');

        console.log('Socket input : ' + nbrGame);
        if (nbrGame > 0) {
            lst.style.display = '';
            cellRadio.style.display = '';
            cellNom.className = 'col-lg-3';
            cellLabel.innerText = 'Crée ta partie ou rejoins une en cours,';
        } else {
            lst.style.display = 'none';
            cellRadio.style.display = 'none';
            cellNom.className = 'col-lg-4';
            cellLabel.innerText = 'Crée ta partie';
        }
    });

    socket.emit('loginPage');
}

function select(imId) {
    var imTarget = document.getElementById(imId);
    var imSource;
    var idCurrentGame = document.getElementById('idPartieChoisie');

    //Si une sélection est déjà effectuée
    if (idCurrentGame !== null && idCurrentGame.value !== '') {
        imSource = document.getElementById(idCurrentGame.value);
        imSource.src = 'img/jeu.png';
    }

    imTarget.src = 'img/jeuSelect.png';
    idCurrentGame.value = imId;
    document.getElementById('choixExistant').checked = true;
}

function checkField() {
    var lg = document.getElementById('login');
    var rdNew = document.getElementById('choixNouveau');
    var idNewGame = document.getElementById('nouveauNom');
    var listeGame = document.getElementById('lesParties');
    var idGame = document.getElementById('idGame');

    if (lg.value === null || lg.value === '') {
        alert('Précise ton login');
        return false;
    }

    if (rdNew.checked == true) {
        //nouvelle partie indiquée
        if (idNewGame.value === null || idNewGame.value === '') {
            alert('Précise le nom pour ta nouvelle partie');
            return false;
        }

        idGame.value = idNewGame.value;
    } else {
        //partie en cours
        //test si la liste est gérée avec la classe fish eye ou une liste standard
        if (listeGame.className === 'fisheyeContainter') {
            if (document.getElementById('idPartieChoisie').value === null || document.getElementById('idPartieChoisie').value === '') {
                alert('Choisis une partie en cours');
                return false;
            }

            idGame.value = document.getElementById('idPartieChoisie').value;
        } else {
            if (listeGame.options[listeGame.selectedIndex].text == null) {
                alert('Choisis une partie en cours');
                return false;
            }

            idGame.value = listeGame.options[listeGame.selectedIndex].text;
        }
    }

    return true;
}

function formatMenu(nbrGame) {
    var ratio = 1;

    //reduction du fisheye pour un meilleure affichage
    if (nbrGame > 5)
        ratio = (350 / nbrGame) / 70

    $(document).ready(function() {
        $('#fisheye').Fisheye({
            maxWidth: 50 * ratio,
            items: 'a',
            itemsText: 'span',
            container: '.fisheyeContainter',
            itemWidth: 70 * ratio,
            proximity: 90 * ratio,
            halign: 'center'
        })
    });
}

function setDessine() {
    var type = document.getElementById('typeAction');
    type.value = 'cust';
}

function setPlateau() {
    var idGameTab = document.getElementById('idGameTab');
    idGameTab.value = document.getElementById('lesPartiesCustom').value;
    var type = document.getElementById('typeAction');
    type.value = 'plateau';
    return true;

}

function getQueryStringParam(sParam) {
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] === sParam) {
            return sParameterName[1];
        }
    }
    return null;
}

function doAutoLogin() {
    var login = getQueryStringParam('login');
    var idGame = getQueryStringParam('idGame');
    if (login !== null && idGame !== null) {
        $('.container').css('display', 'none');
        var form = $('<form />', {
            action: '/',
            method: 'post',
        });
        $('<input />', {
            type: 'hidden',
            name: 'login',
            value: login
        }).appendTo(form);
        $('<input />', {
            type: 'hidden',
            name: 'idGame',
            value: idGame
        }).appendTo(form);
        $('<input />', {
            type: 'hidden',
            name: 'typeAction',
            value: 'norm'
        }).appendTo(form);
        form.submit();
    }
}